Bug fix in error handling in get_page_from_l4e()
authormafetter@aosda.research.intel-research.net <mafetter@aosda.research.intel-research.net>
Tue, 8 Nov 2005 11:26:48 +0000 (12:26 +0100)
committermafetter@aosda.research.intel-research.net <mafetter@aosda.research.intel-research.net>
Tue, 8 Nov 2005 11:26:48 +0000 (12:26 +0100)
xen/arch/x86/mm.c

index 5664b88d8acf94ca3fbdf302617705edef9c8ee6..118541f311f6c246c4bc492444892ccd4203b36a 100644 (file)
@@ -507,7 +507,7 @@ get_page_from_l2e(
         l2e_get_pfn(l2e), PGT_l1_page_table | vaddr, d);
 
 #if CONFIG_PAGING_LEVELS == 2
-    if (!rc)
+    if ( unlikely(!rc) )
         rc = get_linear_pagetable(l2e, pfn, d);
 #endif
     return rc;
@@ -540,7 +540,7 @@ get_page_from_l3e(
         l3e_get_pfn(l3e),
         PGT_l2_page_table | vaddr, d);
 #if CONFIG_PAGING_LEVELS == 3
-    if (!rc)
+    if ( unlikely(!rc) )
         rc = get_linear_pagetable(l3e, pfn, d);
 #endif
     return rc;
@@ -575,9 +575,9 @@ get_page_from_l4e(
         PGT_l3_page_table | vaddr, d);
 
     if ( unlikely(!rc) )
-        return get_linear_pagetable(l4e, pfn, d);
+        rc = get_linear_pagetable(l4e, pfn, d);
 
-    return 1;
+    return rc;
 }
 
 #endif /* 4 level */